package chalmers.game.subterranean.model.player;

import chalmers.game.subterranean.model.physics.IMovableBody;
import chalmers.game.subterranean.model.physics.IPhysicsHandler;
import chalmers.game.subterranean.util.Direction;

/**
 * The methods wich behavior differs drastically for players in different states. All states are
 * also capable of handling physics of the player body.
 * 
 * @author Alex Evert
 */
interface IState extends IPhysicsHandler {

  /**
   * Try to jump.
   */
  public void jump(IMovableBody body);

  /**
   * Run in the given direction, effect vary wildly.
   * 
   * @param direction
   */
  public void run(IMovableBody body, Direction direction);

  /**
   * Stop the player while running.
   */
  public void stop(IMovableBody body);

  public void checkSurrounding(IMovableBody body);

}
